package net.ericaro.neodocs;

/**
 * Enum identifying kinds of anti patterns. This list has been extracted from
 * wikipedia.
 * 
 * @author bcantin
 * 
 */
public enum AntiPattern {
	// Software design anti-patterns

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Abstraction_inversion">documentation</a>
	 */
	ABSTRACTION_INVERSION,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Ambiguous_viewpoint">documentation</a>
	 */
	AMBIGUOUS_VIEWPOINT,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Big_ball_of_mud">documentation</a>
	 */
	BIG_BALL_OF_MUD,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Database-as-IPC">documentation</a>
	 */
	DATABASE_AS_IPC,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Gold_plating_%28analogy%29">documentation</a>
	 */
	GOLD_PLATING,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Inner-platform_effect">documentation</a>
	 */
	INNER_PLATFORM_EFFECT,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Input_kludge">documentation</a>
	 */
	INPUT_KLUDGE,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Interface_bloat">documentation</a>
	 */
	INTERFACE_BLOAT,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Magic_pushbutton">documentation</a>
	 */
	MAGIC_PUSHBUTTON,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/Race_hazard">documentation</a>
	 */
	RACE_HAZARD,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Stovepipe_system">documentation</a>
	 */
	STOVEPIPE_SYSTEM,

	// Object-oriented design anti-patterns

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Anemic_Domain_Model">documentation</a>
	 */
	ANEMIC_DOMAIN_MODEL,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/BaseBean">documentation</a>
	 */
	BAS_BEAN,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/Call_super">documentation</a>
	 */
	CALL_SUPER,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Circle-ellipse_problem">documentation</a>
	 */
	CIRCLE_ELLIPSE_PROBLEM,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Circular_dependency">documentation</a>
	 */
	CIRCULAR_DEPENDENCY,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Constant_interface">documentation</a>
	 */
	CONSTANT_INTERFACE,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/God_object">documentation</a>
	 */
	GOD_OBJECT,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Object_cesspool#Pitfalls">documentation</a>
	 */
	OBJECT_CESSPOOL,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/Object_orgy">documentation</a>
	 */
	OBJECT_ORGY,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Poltergeist_%28computer_science%29">documentation</a>
	 */
	POLTERGEISTS,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Sequential_coupling">documentation</a>
	 */
	SEQUENTIAL_COUPLING,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Yo-yo_problem">documentation</a>
	 */
	YO_YO_PROBLEM,

	// Programming anti-patterns

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Accidental_complexity">documentation</a>
	 */
	ACCIDENTAL_COMPLEXITY,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Action_at_a_distance_%28computer_science%29">documentation</a>
	 */
	ACTION_AT_A_DISTANCE,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Blind_faith_%28computer_science%29">documentation</a>
	 */
	BLIND_FAITH,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/Boat_anchor">documentation</a>
	 */
	BOAT_ANCHOR,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/Busy_spin">documentation</a>
	 */
	BUSY_SPIN,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Caching_failure">documentation</a>
	 */
	CACHING_FAILURE,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Cargo_cult_programming">documentation</a>
	 */
	CARGO_CULT_PROGRAMMING,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Coding_by_exception">documentation</a>
	 */
	CODING_BY_EXCEPTION,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Error_hiding">documentation</a>
	 */
	ERROR_HIDING,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/Hard_code">documentation</a>
	 */
	HARD_CODE,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Lava_flow_%28programming%29">documentation</a>
	 */
	LAVA_FLOW,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Loop-switch_sequence">documentation</a>
	 */
	LOOP_SWITCH_SEQUENCE,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Magic_number_%28programming%29#Unnamed_numerical_constants">documentation</a>
	 */
	MAGIC_NUMBERS,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Magic_string_%28programming%29#Magic_strings_in_code">documentation</a>
	 */
	MAGIC_STRINGS,

	/**
	 * @see <a href="http://en.wikipedia.org/wiki/Softcoding">documentation</a>
	 */
	SOFT_CODE,

	/**
	 * @see <a
	 *      href="http://en.wikipedia.org/wiki/Spaghetti_code">documentation</a>
	 */
	SPAGHETTI_CODE,

	OTHER

}
